<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 如果没有祖先元素或者祖先元素没有定位，则以浏览器为准定位 -->
    <style>
        /* 1、此时，父元素没有定位 ，因此子元素就以浏览器为基准*/
        /* .father {
            width: 300px;
            height: 400px;
            background-color: #666666;
        }

        .son {
            width: 200px;
            height: 150px;
            background-color: black;
            position: absolute;
            top: 20px;
            left: 300px;
        } */


        /* 2、此时，父元素有定位 ,那么子元素就以父元素为基准进行移动*/
        .father {
            width: 300px;
            height: 400px;
            background-color: #666666;
            position: relative;
        }

        .son {
            width: 200px;
            height: 150px;
            background-color: black;
            position: absolute;
            top: 20px;
            left: 300px;
        }


        /* 3、如果祖先元素有定位（指 相对  绝对  固定），则以最近一级有定位祖先为基准 */
       
        .grandfather {
            width: 500px;
            height: 500px;
            background-color: blue;
            position: relative;
            top: 100px;
        }

        .father {
            width: 300px;
            height: 300px;
            background-color: #666666;
        }

        .son {
            width: 200px;
            height: 150px;
            background-color: rgb(237, 178, 178);
            /* 这个爷爷元素有定位，而父元素没有；，因此要以爷爷为基准 */
            position: absolute;
            bottom: 20px;
            left: 300px;
        }
    </style>
</head>

<body>
    <!-- 绝对定位要脱标 -->
    <div class="grandfather">
        <div class="father">
            <div class="son"></div>
        </div>
    </div>

</body>

</html>